home *** CD-ROM | disk | FTP | other *** search
/ Cre@te Online 2000 December / Cre@teOnline CD05.iso / MacSoft / XML ConsoleMax.sea / XML ConsoleMax / Required / esc.jar / com / extensibility / print / Printer.class (.txt) < prev    next >
Encoding:
Java Class File  |  2000-06-30  |  5.6 KB  |  193 lines

  1. package com.extensibility.print;
  2.  
  3. import com.extensibility.app.BaseApplication;
  4. import com.extensibility.app.DialogFactory;
  5. import java.awt.BorderLayout;
  6. import java.awt.Component;
  7. import java.awt.Container;
  8. import java.awt.Dimension;
  9. import java.awt.Frame;
  10. import java.awt.Graphics;
  11. import java.awt.Insets;
  12. import java.awt.PrintJob;
  13. import java.awt.Window;
  14. import java.util.Properties;
  15. import javax.swing.Box;
  16. import javax.swing.JComponent;
  17. import javax.swing.JEditorPane;
  18. import javax.swing.JFrame;
  19. import javax.swing.event.EventListenerList;
  20.  
  21. public class Printer {
  22.    Insets insets = getDefaultInsets();
  23.    Component header = Box.createHorizontalBox();
  24.    Component footer = Box.createHorizontalBox();
  25.    EventListenerList listenerList = new EventListenerList();
  26.  
  27.    public static Insets getDefaultInsets() {
  28.       return new Insets(60, 60, 60, 60);
  29.    }
  30.  
  31.    public static Insets getInsets() {
  32.       String[] var0 = BaseApplication.getPreferences().getMargins();
  33.       int var1 = Integer.valueOf(var0[2]);
  34.       int var2 = Integer.valueOf(var0[3]);
  35.       int var3 = Integer.valueOf(var0[0]);
  36.       int var4 = Integer.valueOf(var0[1]);
  37.       return new Insets(var3, var2, var4, var1);
  38.    }
  39.  
  40.    public void setFooter(String var1, String var2, String var3) {
  41.       this.footer = this.createHF(var1, var2, var3, 1.0F, 10);
  42.    }
  43.  
  44.    public void setHeader(String var1, String var2, String var3) {
  45.       this.header = this.createHF(var1, var2, var3, 0.0F, 12);
  46.    }
  47.  
  48.    public void setFooter(Component var1) {
  49.       this.footer = var1;
  50.    }
  51.  
  52.    public void setHeader(Component var1) {
  53.       this.header = var1;
  54.    }
  55.  
  56.    private Component createHF(String var1, String var2, String var3, float var4, int var5) {
  57.       Box var6 = Box.createHorizontalBox();
  58.       1.PageLabel var7 = new 1.PageLabel(this, var5);
  59.       this.addPageChangeListener(var7);
  60.       1.PageLabel var8 = new 1.PageLabel(this, var5);
  61.       ((JComponent)var8).setAlignmentX(0.0F);
  62.       this.addPageChangeListener(var8);
  63.       1.PageLabel var9 = new 1.PageLabel(this, var5);
  64.       ((JComponent)var9).setAlignmentX(4.0F);
  65.       this.addPageChangeListener(var9);
  66.       if (var1 != null) {
  67.          var7.setText(var1);
  68.       }
  69.  
  70.       if (var2 != null) {
  71.          var8.setText(var2);
  72.       }
  73.  
  74.       if (var3 != null) {
  75.          var9.setText(var3);
  76.       }
  77.  
  78.       ((Container)var6).add(var7);
  79.       ((Container)var6).add(Box.createHorizontalGlue());
  80.       ((Container)var6).add(var8);
  81.       ((Container)var6).add(Box.createHorizontalGlue());
  82.       ((Container)var6).add(var9);
  83.       Box var10 = Box.createVerticalBox();
  84.       if (var4 == 0.0F) {
  85.          ((Container)var10).add(var6);
  86.          ((Container)var10).add(Box.createVerticalStrut(16));
  87.       } else {
  88.          ((Container)var10).add(Box.createVerticalStrut(16));
  89.          ((Container)var10).add(var6);
  90.       }
  91.  
  92.       return var10;
  93.    }
  94.  
  95.    protected int printEachComponent(Component var1, JFrame var2, PrintJob var3, boolean var4) {
  96.       Dimension var5 = var3.getPageDimension();
  97.       Insets var6 = getInsets();
  98.       int var7 = 0;
  99.       int var8 = var5.width;
  100.       int var9 = var5.height;
  101.       int var10 = var8 - var6.left - var6.right;
  102.       int var11 = var9 - var6.top - var6.bottom;
  103.       int var12 = var1.getPreferredSize().height;
  104.       int var13 = var1.getPreferredSize().width;
  105.       int var14 = this.header.getPreferredSize().height;
  106.       int var15 = this.footer.getPreferredSize().height;
  107.       int var16 = var11 - var14 - var15;
  108.       int var17 = var4 ? var13 / var10 + 1 : 1;
  109.       int var18 = var12 / var16 + 1;
  110.       var7 = var17 * var18;
  111.       ((Component)var2).setLocation(0, ((Window)var2).getToolkit().getScreenSize().height + 1);
  112.       ((Window)var2).pack();
  113.       Dimension var19 = var2.getContentPane().getSize();
  114.       Dimension var20 = ((Component)var2).getSize();
  115.       ((Component)var2).setSize(var10 + (var20.width - var19.width), var11 + (var20.height - var19.height));
  116.       ((Component)var2).setVisible(true);
  117.  
  118.       for(int var22 = 0; var22 < var18; ++var22) {
  119.          for(int var23 = 0; var23 < var17; ++var23) {
  120.             int var21 = var22 * var17 + var23;
  121.             Graphics var24 = var3.getGraphics();
  122.             var24.translate(var6.right, 0);
  123.             this.firePageChangeEvent(var21 + 1);
  124.             var24.setClip(0, var6.top, var10, var14);
  125.             var24.translate(0, var6.top);
  126.             this.header.printAll(var24);
  127.             var24.translate(0, -var6.top);
  128.             var24.setClip(0, var6.top + var14, var10, var16);
  129.             var24.translate(-(var10 * var23), (var16 * var22 - (var6.top + var14)) * -1);
  130.             if (var1 instanceof JEditorPane) {
  131.                var1.paintAll(var24);
  132.             } else {
  133.                var1.printAll(var24);
  134.             }
  135.  
  136.             var24.translate(var10 * var23, -(var16 * var22 - (var6.top + var14)) * -1);
  137.             var24.setClip(0, var6.top + var14 + var16, var10, var15);
  138.             var24.translate(0, var6.top + var14 + var16);
  139.             this.footer.printAll(var24);
  140.             var24.dispose();
  141.          }
  142.       }
  143.  
  144.       return var7;
  145.    }
  146.  
  147.    public void print(String var1, Component var2, boolean var3) {
  148.       if (var2.getParent() != null) {
  149.          throw new IllegalArgumentException("Print components should have no parents");
  150.       } else {
  151.          JFrame var4 = new JFrame();
  152.          ((Frame)var4).setTitle(var1);
  153.          var4.getContentPane().setLayout(new BorderLayout());
  154.          var4.getContentPane().add(this.header, "North");
  155.          var4.getContentPane().add(var2, "Center");
  156.          var4.getContentPane().add(this.footer, "South");
  157.  
  158.          try {
  159.             PrintJob var5 = ((Window)var4).getToolkit().getPrintJob(var4, var1, (Properties)null);
  160.             if (var5 != null) {
  161.                this.printEachComponent(var2, var4, var5, var3);
  162.                var5.end();
  163.             }
  164.          } catch (Exception var6) {
  165.             DialogFactory.showException((Component)null, 124, var6);
  166.          }
  167.  
  168.          ((Component)var4).setVisible(false);
  169.          ((Frame)var4).dispose();
  170.       }
  171.    }
  172.  
  173.    public void addPageChangeListener(PageChangeListener var1) {
  174.       this.listenerList.add(Class.forName("com.extensibility.print.PageChangeListener"), var1);
  175.    }
  176.  
  177.    public void removePageChangeListener(PageChangeListener var1) {
  178.       this.listenerList.remove(Class.forName("com.extensibility.print.PageChangeListener"), var1);
  179.    }
  180.  
  181.    protected void firePageChangeEvent(int var1) {
  182.       Object[] var2 = this.listenerList.getListenerList();
  183.  
  184.       for(int var3 = var2.length - 2; var3 >= 0; var3 -= 2) {
  185.          if (var2[var3] == Class.forName("com.extensibility.print.PageChangeListener")) {
  186.             PageChangeListener var4 = (PageChangeListener)var2[var3 + 1];
  187.             var4.pageChanged(var1);
  188.          }
  189.       }
  190.  
  191.    }
  192. }
  193.